/*
* Copyright 2025 NXP
* NXP Proprietary. This software is owned or controlled by NXP and may only be used strictly in
* accordance with the applicable license terms. By expressly accepting such terms or by downloading, installing,
* activating and/or otherwise using the software, you are agreeing that you have read, and that you agree to
* comply with and are bound by, such license terms.  If you do not agree to be bound by the applicable license
* terms, then you may not retain, install, activate or otherwise use the software.
*/

#ifndef GUI_GUIDER_H
#define GUI_GUIDER_H
#ifdef __cplusplus
extern "C" {
#endif

#include "lvgl.h"

typedef struct
{
  
	lv_obj_t *screen_home;
	bool screen_home_del;
	lv_obj_t *screen_home_digital_clock_time;
	lv_obj_t *screen_home_datetext;
	lv_obj_t *screen_home_textprogress_power;
	lv_obj_t *screen_home_bar_power;
	lv_obj_t *screen_home_btn_weater;
	lv_obj_t *screen_home_btn_weater_label;
	lv_obj_t *screen_home_btn_heart;
	lv_obj_t *screen_home_btn_heart_label;
	lv_obj_t *screen_information;
	bool screen_information_del;
	lv_obj_t *screen_information_label_message;
	lv_obj_t *screen_ctrl;
	bool screen_ctrl_del;
	lv_obj_t *screen_ctrl_btn_flashlight;
	lv_obj_t *screen_ctrl_btn_flashlight_label;
	lv_obj_t *screen_ctrl_btn_set;
	lv_obj_t *screen_ctrl_btn_set_label;
	lv_obj_t *screen_ctrl_btn_alarm_clock;
	lv_obj_t *screen_ctrl_btn_alarm_clock_label;
	lv_obj_t *screen_ctrl_btn_led;
	lv_obj_t *screen_ctrl_btn_led_label;
	lv_obj_t *screen_ctrl_btn_1;
	lv_obj_t *screen_ctrl_btn_1_label;
	lv_obj_t *screen_ctrl_btn_2;
	lv_obj_t *screen_ctrl_btn_2_label;
	lv_obj_t *screen_flashlight;
	bool screen_flashlight_del;
	lv_obj_t *screen_LED;
	bool screen_LED_del;
	lv_obj_t *screen_LED_led_1;
	lv_obj_t *screen_LED_btn_open;
	lv_obj_t *screen_LED_btn_open_label;
	lv_obj_t *screen_LED_btn_close;
	lv_obj_t *screen_LED_btn_close_label;
	lv_obj_t *screen_alarm_clock;
	bool screen_alarm_clock_del;
	lv_obj_t *screen_alarm_clock_cont_bg;
	lv_obj_t *screen_alarm_clock_cont_2;
	lv_obj_t *screen_alarm_clock_sw_1;
	lv_obj_t *screen_alarm_clock_label_time;
	lv_obj_t *screen_alarm_clock_set;
	bool screen_alarm_clock_set_del;
	lv_obj_t *screen_alarm_clock_set_roller_hours;
	lv_obj_t *screen_alarm_clock_set_roller_minutes;
	lv_obj_t *screen_alarm_clock_set_label_1;
	lv_obj_t *screen_alarm_clock_set_label_2;
	lv_obj_t *screen_alarm_clock_set_btn_1;
	lv_obj_t *screen_alarm_clock_set_btn_1_label;
	lv_obj_t *screen_set;
	bool screen_set_del;
	lv_obj_t *screen_set_cont_1;
	lv_obj_t *screen_set_sw_1;
	lv_obj_t *screen_set_label_hour_clock;
	lv_obj_t *screen_alarm_clock_remind;
	bool screen_alarm_clock_remind_del;
	lv_obj_t *screen_alarm_clock_remind_img_1;
	lv_obj_t *screen_alarm_clock_remind_label_1;
	lv_obj_t *screen_alarm_clock_remind_btn_1;
	lv_obj_t *screen_alarm_clock_remind_btn_1_label;
	lv_obj_t *screen_alarm_clock_remind_btn_2;
	lv_obj_t *screen_alarm_clock_remind_btn_2_label;
}lv_ui;

typedef void (*ui_setup_scr_t)(lv_ui * ui);

void ui_init_style(lv_style_t * style);

void ui_load_scr_animation(lv_ui *ui, lv_obj_t ** new_scr, bool new_scr_del, bool * old_scr_del, ui_setup_scr_t setup_scr,
                           lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool is_clean, bool auto_del);

void ui_animation(void * var, int32_t duration, int32_t delay, int32_t start_value, int32_t end_value, lv_anim_path_cb_t path_cb,
                       uint16_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay,
                       lv_anim_exec_xcb_t exec_cb, lv_anim_start_cb_t start_cb, lv_anim_ready_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb);


void init_scr_del_flag(lv_ui *ui);

void setup_ui(lv_ui *ui);


extern lv_ui guider_ui;


void setup_scr_screen_home(lv_ui *ui);
void setup_scr_screen_information(lv_ui *ui);
void setup_scr_screen_ctrl(lv_ui *ui);
void setup_scr_screen_flashlight(lv_ui *ui);
void setup_scr_screen_LED(lv_ui *ui);
void setup_scr_screen_alarm_clock(lv_ui *ui);
void setup_scr_screen_alarm_clock_set(lv_ui *ui);
void setup_scr_screen_set(lv_ui *ui);
void setup_scr_screen_alarm_clock_remind(lv_ui *ui);

LV_IMG_DECLARE(_weather_50x50);

LV_IMG_DECLARE(_heart_rate_50x50);

LV_IMG_DECLARE(_sdt_90x90);

LV_IMG_DECLARE(_sz_90x90);

LV_IMG_DECLARE(_nz_90x90);

LV_IMG_DECLARE(_led_90x90);
LV_IMG_DECLARE(_nz_alpha_100x100);

LV_FONT_DECLARE(lv_font_montserratMedium_60)
LV_FONT_DECLARE(lv_font_montserratMedium_16)
LV_FONT_DECLARE(lv_font_montserratMedium_12)
LV_FONT_DECLARE(lv_font_montserratMedium_32)


#ifdef __cplusplus
}
#endif
#endif
